package game;

import java.io.*;

/**
 * Cree un fichier html contenant le type de comportements d'un ensemble de jeux
 * contenu dans un dossier
 */
public class Html {

	/**
	 * Cree un fichier html contenant le type de comportements d'un ensemble de
	 * jeux contenu dans un dossier
	 * 
	 * @param fichier
	 *            : fichier dans lequel se trouve les differents jeux
	 * @param p
	 *            : plateau de jeu
	 * @param stop
	 *            : duree du jeu
	 */
	public static void creation_html(String[] fichier, Plateau p, int stop) {
		String s = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n"
				+ "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"
				+ "<html lang=\"fr\" xml:lang=\"fr\" xmlns=\"http://www.w3.org/1999/xhtml\">\n"
				+ "<head>\n"
				+ "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n"
				+ "<title>Resultat des fichiers lif</title>\n"
				+ "<script type=\"text/javascript\" src=\"Exercice1.js\"></script>\n"
				+ "</head>\n" +

				"<body>\n";
		for (int i = 0; i < fichier.length; i++) {
			s += "<p>\n";
			creation(fichier[i], p, stop, s);
			s += "</p>\n";

		}
		s += "</body>";
		s += "</html>";
		try {
			FileWriter f = new FileWriter(new File("resultat.html"));
			f.write(s);
		} catch (IOException e) {
			System.out.println("opération impossible");
		}
	}

	/**
	 * Renvoie les comportements et les caracteristiques d'un jeu
	 * 
	 * @param fichier
	 *            : fichier contenant le jeu
	 * @param p
	 *            : plateau de jeu
	 * @param stop
	 *            : duree du jeu
	 * @param s
	 *            : string contenant du language html
	 * @return la string completee avec les informations sur les comportements
	 *         et les caracteristiques du jeu
	 */
	public static String creation(String fichier, Plateau p, int stop, String s) {
		int periode = Comportement.Periode(p, stop);
		int queue;
		String comportement;
		if (periode == 0) {
			queue = Comportement.Queue_mort(p);
			comportement = "mort";
		} else {
			if (periode == 1) {
				queue = Comportement.Queue_stable(p);
				comportement = "stable";
			} else {
				if (periode > 0) {
					queue = Comportement.Queue(p, periode);
					comportement = Queue(p, periode);
				} else {
					queue = 0;
					comportement = "inconnu";
				}
			}
		}

		s += "Fichier : " + fichier + "\n";
		s += "Etat " + comportement + "\n";
		s += "La queue est de " + queue + "\n";
		s += "La période est de " + periode + "\n";

		return s;
	}

	/**
	 * Renvoie la forme de la queue
	 * 
	 * @param p
	 *            : plateau de jeu
	 * @param periode
	 *            : duree du jeu
	 * @return la forme de la queue
	 */
	public static String Queue(Plateau p, int periode) {
		Plateau pclone = new Plateau(p.getJeu(), p.getVie(), p.getMort());
		int i = 0;
		while (i < periode) {
			pclone.setJeu(Modification.simu(pclone));
			i++;
		}
		while (!Plateau.compareList(p.getJeu(), pclone.getJeu())) {
			p.setJeu(Modification.simu(p));
			pclone.setJeu(Modification.simu(pclone));
		}
		if (Plateau.compareList2(p.getJeu(), pclone.getJeu())) {
			return "oscillateur";
		} else {
			return "vaisseau";
		}
	}

}
